/**
 * @Author: XJH
 * @Description: TODO
 * @Date: 2025/10/21 22:00
 * @Version: 1.0
 */

import static java.util.Collections.swap;

/**
 * @Author: XJH
 * @Description: TODO
 * @Date: 2025/10/21 22:00
 * @Version: 1.0
 *
int n=nums.length;
int cur=0;
for(int i=0;i<n;i++)
{
if(nums[i]!=0)
{
nums[cur]=nums[i];
cur++;
}
}

for(int i=cur;i<n;i++){
nums[i]=0;
}
 * 283. 移动零

 * 给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。
 * 请注意 ，必须在不复制数组的情况下原地对数组进行操作
 */
public class moveZeroes {
    public void moveZeroes(int[] nums) {

      int n=nums.length;
      int left=0;//指向当前需要放置非0元素的位置(左指针
      int right=0;//遍历数组的指针(右指针)
      while (right<n){
          if(nums[right]!=0){
              swap(nums,left,right);//遇到非0元素，和left位置交换，left后移
              left++;
          }
          right++;//右指针不断后移，遍历所有元素
      }
    }

    private void swap(int[] nums, int left, int right) {

        int temp=nums[left];
        nums[left]=nums[right];
        nums[right]=temp;
    }
    public static void main(String[] args) {
        int[] nums = {0,1,0,3,12};
        new moveZeroes().moveZeroes(nums);
        for (int i = 0; i < nums.length; i++) {
            System.out.print(nums[i]+",");
        }


    }


}
